草庐IT

C++ unique_ptr 和映射

全部标签

c++ - 在 C++ 中创建 lambda 映射

如何描述lambda的映射?我想要一个lambda映射,它将在事件发生时被调用(就像一个简单的回调)。lambda类型是常量。 最佳答案 使用header和std::function模板类。这允许您指定具有固定方法签名的函数对象。std::map>callbackMap;假设您使用unsignedint索引回调,上面的map存储了两个函数int并返回int. 关于c++-在C++中创建lambda映射,我们在StackOverflow上找到一个类似的问题: h

c++ - 这个 unique_ptr 的初始化有什么问题?

有人能告诉我,unique_ptr的以下初始化有什么问题吗?intmain(){unique_ptrpy(nullptr);py=newint;....}g++-O2xxx.cc-lm-oxxx-std=c++11说:error:nomatchfor‘operator=’(operandtypesare‘std::unique_ptr’and‘int*’)py=newint;^做unique_ptrpx(newint);工作得很好。 最佳答案 两段代码的初始化都很好,unique_ptr有constructors对于nullptr和

c++ - 为什么我不能 std::move std::unique_ptrs between std::sets?

我真的很想将一些unique_ptr从一个std::setmove到另一个:#include#include#includeintmain(){std::set>a;std::set>b;a.insert({0,std::unique_ptr(newint(42))});std::move(a.begin(),a.end(),std::inserter(b,b.end()));}但是,我在CentOS7上的GCC4.8.5显然不满意:[root@localhost~]#g++test.cpp-std=c++11-otestInfileincludedfrom/usr/include/c

直接映射的缓存,命中还是错过?

我的运动有问题:缓存DM。缓存尺寸-64KB,单线大小-64B。打开后,Procesor已阅读Adresses:0x000000x0003c0x0013c0xf00380x000150x00130我不得不说,什么时候会错过,什么时候会被击中。我发现了一些与此类似练习的例子,但是我不知道如何处理十六进制中的地址。我知道:Cacheaddress=MemoryAddress**mod**CacheSize,但我不知道如何解决这项练习。先感谢您。看答案回答此类问题的一种方法是找到tag,index和offset给定缓存设计的位。然后将地址访问模式映射到相应的标签,索引以获取命中/错过信息。例如,考虑

c++ - 为什么这个 auto_ptr 的 dynamic_cast 会失败?

#include"iostream"classA{private:inta;public:A():a(-1){}intgetA(){returna;}};classA;classB:publicA{private:intb;public:B():b(-1){}intgetB(){returnb;}};intmain(){std::auto_ptra=newA();std::auto_ptrb=dynamic_cast>(a);return0;}错误:不能dynamic_cast`(&a)->std::auto_ptr::get()const 最佳答案

c++ - 如何将 boost::shared_ptr 引入现有(大型)C++ 代码库?

我目前正尝试通过引入智能指针的使用来修复我们代码库中的一些弱点。代码库非常庞大,并且相互关联,就像一只喝过一对多咖啡的蜘蛛。我想知道以前是否有人尝试过,他们的方法是什么。我的第一步是typedef类,如下所示。#ifndefUSE_SMART_POINTERS#defineUSE_SMART_POINTERS0#endif#ifUSE_SMART_POINTERS==1#include#endifnamespaceProductX{//forwarddeclerationclassCTObject;//typedefs#ifUSE_SMART_POINTERS==1typedefboo

c++ - 如何实现 std::auto_ptr 是复制构造函数?

回到我的疯狂AutoArraythingy...(从那里引用重要的部分:classAutoArray{void*buffer;public://CreatesanewemptyAutoArrayAutoArray();//std::auto_ptrcopysemanticsAutoArray(AutoArray&);//Noteitcan'tbeconstbecausethe"other"reference//isnull'doncopy...AutoArray&operator=(AutoArray);~AutoArray();//Nothrowswap//Note:Atthemom

c++ - 最快的 C++ 容器 : Unique Values

我正在编写一个与MySQL数据库交互的电子邮件应用程序。我有两个表来获取我的数据,其中一个包含取消订阅,另一个是标准用户表。截至目前,我正在创建一个指向电子邮件对象的指针vector,并将所有未订阅的电子邮件存储在其中,最初是这样。然后我有一个标准的SQL循环,我在其中检查电子邮件是否不在取消订阅vector中,然后将其添加到全局发送电子邮件vector中。我的问题是,是否有更有效的方法来做到这一点?我必须为系统中的每一封电子邮件搜索unsubvector,最多5万封不同的邮件。是否有更好的搜索结构?并且,一个更好的结构来维护一个独特的值(value)集合?如果它已经包含它,也许会简单

c++ - 为什么 vector.push_back(auto_ptr) 无法编译?

我了解到STL可以禁止程序员将auto_ptr放入容器中。例如下面的代码不会编译:auto_ptra(newint(10));vector>v;v.push_back(a);auto_ptr有拷贝构造函数,为什么这段代码还能通过? 最佳答案 查看thedefinitionofstd::auto_ptr:namespacestd{templatestructauto_ptr_ref{};templateclassauto_ptr{public:typedefXelement_type;//20.4.5.1construct/copy/

c++ - 什么时候将 unique_ptr 与 STL 容器一起使用才有意义? (C++11)

unique_ptr的容器似乎没有什么意义:你不能将它与初始化列表一起使用,而且我无法遍历容器(下面的解决方法)。我误会了什么吗?或者什么时候使用unique_ptr有意义和STL容器?#include#includeusingnamespacestd;structBase{voidgo(){}virtual~Base(){}};//virtual~Base()=default;gives//"declaredvirtualcannotbedefaultedintheclassbody"why?classDerived:publicBase{};intmain(){//vector>v